<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
    <style>
        .box {
            padding: 20px;
            margin: 20px;
            border: 1px solid red;
        }
    </style>
</head>

<body>
    <!-- 定义挂载点 -->
    <div id="app">
        <v-one></v-one>
        <v-one></v-one>
        <v-one></v-one>
        <v-one></v-one>
    </div>

    <template id="one">
        <div class="box">
            <h3>this in on</h3>
            <div>one content</div>
            <input type="text" v-model="name">
            <div>name:{{name}}</div>
        </div>
    </template>
    <script>
        new Vue({
            //挂载点
            el: "#app",
            //数据
            data: {
                isShow:false
            },
            //方法
            methods: {},
            components: {
                // 定义组件 可复用的vue实例,没有el，data必须是一个函数，需要返回一个对象
                /*data为什么是一个函数？ 
                1.组件是复用，我们希望组件长一样，但是数据相互隔离的
                2.如果data是一个对象的话，对象一个引用数据类型，那么所有的组件共用一套数据，那么就会一改全改
                3.如果data是一个函数返回一个对象的话，函数就是一个作用域空间，每调用一次，就会生成一个新的作用空间，里面有一个对象，这样的话数据都是隔离的
                */
                vOne: {
                    template: "#one",
                    data(){
                        return {name:"妲己"}
                    }
                }
            }
        })
    </script>
</body>

</html>


